package day11;

// 多态中, 成员的特点
public class Demo03 {
	public static void main(String[] args) {
		Sub s = new Sub();
		s.doSome();
		//		s.doOther();
		//		s.some();
		System.out.println(s.num);

		Parent p = new Sub();
		p.doSome();
		//		p.doOther();
		// p.some();
		System.out.println(p.num);

		// 实例方法在多态调用时, 编译看等号左边, 运行看等号右边
		// 引用在访问方法时, 能够访问哪些方法, 取决于等号左边的类型
		// 运行时, 方法具体执行哪个实现, 取决于等号右边的类型

		// 非私有非静态成员变量, 不论编译还是运行都看等号左边

		// 静态成员, 不论编译还是运行都看等号左边
		// 因为静态成员与对象无关, 运行时根本不考虑等号右边的类型
	}
}

// -------------------------------------------

class Parent {

	static int num = 1;

	public static void doSome() {
		System.out.println("Parent.doSome()");
	}
	//
	//	public void doOther() {
	//		System.out.println("Parent.doOther()");
	//	}
}

class Sub extends Parent {

	static int num = 2;

	// @Override
	public static void doSome() {
		System.out.println("Sub.doSome()");
	}
	//
	//	public void some() {
	//		System.out.println("Sub.some()");
	//	}

}